package librairies.dictionnaire.interfaces;

import librairies.liste.interfaces.IListe;

/**
 * definition d'un dictionnaire.
 * 
 * @author mlozach
 * @param <E> type de l'elements dans le dico
 */
public interface IDictionnaire<E>
{
	/**
	 * ajoute une liste de mot dans l'arbre.
	 * @param words la liste de mot .
	 * @return le nouveau dico.
	 */
	IDictionnaire<E> addWords(IListe<E> words); 
	
	/**
	 * supprime un liste de mot.
	 * @param words la liste de mot.
	 * @return le nouveau dico.
	 */
	IDictionnaire<E> cutWords(IListe<E> words);
	
	/**
	 * retourne la taille de l'arbre.
	 * @return la taille.
	 */
	int size();
	
	/**
	 * permet de savoir si le mot existe dans l'arbre.
	 * @param word le mot.
	 * @return vrai si il existe.
	 */
	boolean exists(E word);
	
	/**
	 * retourne l'objet qui correspont au mot.
	 * @param mot le mot.
	 * @return l'object .
	 */
	E getObjet(String mot);
	
	/**
	 * retourne une liste de mot qui ont le meme prefix.
	 * @param prefix le prefix.
	 * @return la liste de mot.
	 */
	IListe<E> commonPrefix(E prefix);
	
	/**
	 * avoir une liste de prefix
	 * @param prefix le prefix
	 * @return la liste de retour.
	 */
	IListe<E> contains(E prefix);
}